Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: swiftgen prototype #1367

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from
Draft

WIP: swiftgen prototype #1367

wants to merge 11 commits into from

Conversation

liamappelbe
Copy link
Contributor

@liamappelbe liamappelbe commented Jul 22, 2024

Current errors when trying to bind AVFoundation (these are errors found by swiftc in the swift2objc output):

/Users/liama/dev/native/pkgs/swiftgen/AVFoundationWrapper.swift:34:9: error: overriding declaration requires an 'override' keyword
  @objc init() {
        ^
        override
ObjectiveC.NSObject:5:12: note: overridden declaration is here
    public init()
           ^
/Users/liama/dev/native/pkgs/swiftgen/AVFoundationWrapper.swift:62:27: error: cannot find type 'InputSource' in scope
  init(_ wrappedInstance: InputSource) {
                          ^~~~~~~~~~~
/Users/liama/dev/native/pkgs/swiftgen/AVFoundationWrapper.swift:48:24: error: cannot find type 'InputSource' in scope
  var wrappedInstance: InputSource
                       ^~~~~~~~~~~
/Users/liama/dev/native/pkgs/swiftgen/AVFoundationWrapper.swift:990:20: error: overriding declaration requires an 'override' keyword
  @objc public var description: String {
                   ^
               override
ObjectiveC.NSObject:109:14: note: overridden declaration is here
    open var description: String { get }
             ^

Issues:

  1. A few of those errors are missing about overrides. Looks like we need to detect when a generated method has the same name as a method on the super type and add override.
  2. InputSource is AVCaptureDevice.InputSource, so I think the fix there is to add the AVCaptureDevice prefix.
  3. Also, I'm having to manually add a import AVFoundation preamble. We should automatically add this import for module inputs.
  4. Looking at the generated swift2objc output, we're also still missing most of the classes (eg AVPlayer), so it'd be good to figure out why they're not being generated.

#1393

@github-actions github-actions bot added type-infra A repository infrastructure change or enhancement package:swiftgen labels Jul 22, 2024
@github-actions github-actions bot removed the type-infra A repository infrastructure change or enhancement label Jul 22, 2024
Copy link

github-actions bot commented Aug 6, 2024

PR Health

Changelog Entry
Package Changed Files
package:ffigen pkgs/ffigen/lib/ffigen.dart
pkgs/ffigen/lib/src/config_provider.dart
package:swift2objc pkgs/swift2objc/lib/src/config.dart
pkgs/swift2objc/lib/swift2objc.dart
package:swiftgen pkgs/swiftgen/bin/swiftgen.dart
pkgs/swiftgen/lib/src/config.dart
pkgs/swiftgen/lib/src/generator.dart
pkgs/swiftgen/lib/src/util.dart
pkgs/swiftgen/lib/swiftgen.dart
pkgs/swiftgen/pubspec.yaml

Changes to files need to be accounted for in their respective changelogs.

This check can be disabled by tagging the PR with skip-changelog-check.

Coverage ⚠️
File Coverage
pkgs/ffigen/lib/ffigen.dart 💔 Not covered
pkgs/ffigen/lib/src/config_provider.dart 💔 Not covered
pkgs/swift2objc/lib/src/config.dart 💚 65 %
pkgs/swift2objc/lib/swift2objc.dart 💔 Not covered
pkgs/swiftgen/bin/swiftgen.dart 💔 Not covered
pkgs/swiftgen/lib/src/config.dart 💔 Not covered
pkgs/swiftgen/lib/src/generator.dart 💔 Not covered
pkgs/swiftgen/lib/src/util.dart 💔 Not covered
pkgs/swiftgen/lib/swiftgen.dart 💔 Not covered
pkgs/swiftgen/tool/regen_test_bindings.dart 💔 Not covered

This check for test coverage is informational (issues shown here will not fail the PR).

This check can be disabled by tagging the PR with skip-coverage-check.

License Headers ⚠️
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Files
pkgs/swift2objc/lib/src/config.dart
pkgs/swiftgen/test/integration/classes_bindings.dart

All source files should start with a license header.

Unrelated files missing license headers
Files
pkgs/ffigen/example/libclang-example/generated_bindings.dart
pkgs/ffigen/example/shared_bindings/generate.dart
pkgs/ffigen/example/shared_bindings/lib/generated/a_gen.dart
pkgs/ffigen/example/shared_bindings/lib/generated/a_shared_b_gen.dart
pkgs/ffigen/example/shared_bindings/lib/generated/base_gen.dart
pkgs/ffigen/example/simple/generated_bindings.dart
pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_decl_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_type_name_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_reserved_keyword_collision_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_enum_int_mimic_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_imported_types_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_packed_structs_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_regress_384_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_struct_fptr_fields_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_varargs_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_cjson_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_libclang_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_sqlite_bindings.dart
pkgs/ffigen/test/native_test/_expected_native_test_bindings.dart
pkgs/jni/lib/src/third_party/generated_bindings.dart
pkgs/jni/lib/src/third_party/global_env_extensions.dart
pkgs/jni/lib/src/third_party/jni_bindings_generated.dart
pkgs/jnigen/android_test_runner/lib/main.dart
pkgs/jnigen/example/in_app_java/lib/android_utils.dart
pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart
pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart
pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart
pkgs/jnigen/example/pdfbox_plugin/lib/pdfbox_plugin.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/_package.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/_package.dart
pkgs/jnigen/lib/src/bindings/descriptor.dart
pkgs/jnigen/lib/src/elements/elements.g.dart
pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/_package.dart
pkgs/jnigen/tool/command_runner.dart
pkgs/native_assets_builder/test_data/native_dynamic_linking/bin/native_dynamic_linking.dart
pkgs/objective_c/lib/src/ns_input_stream.dart
pkgs/swift2objc/lib/src/generate_wrapper.dart
pkgs/swift2objc/lib/src/generator/_core/utils.dart
pkgs/swift2objc/lib/src/generator/generator.dart
pkgs/swift2objc/lib/src/generator/generators/class_generator.dart
pkgs/swift2objc/lib/src/parser/parsers/declaration_parsers/parse_initializer_declaration.dart
pkgs/swift2objc/lib/src/parser/parsers/declaration_parsers/parse_variable_declaration.dart
pkgs/swift2objc/lib/src/transformer/_core/unique_namer.dart
pkgs/swift2objc/lib/src/transformer/_core/utils.dart
pkgs/swift2objc/lib/src/transformer/transformers/transform_globals.dart
pkgs/swift2objc/lib/src/transformer/transformers/transform_variable.dart
pkgs/swift2objc/test/unit/parse_initializer_param_test.dart

This check can be disabled by tagging the PR with skip-license-check.

Package publish validation ✔️
Package Version Status
package:ffi 2.1.3 already published at pub.dev
package:ffigen 15.0.0-wip WIP (no publish necessary)
package:jni 0.12.1-wip WIP (no publish necessary)
package:jnigen 0.12.2-wip WIP (no publish necessary)
package:native_assets_cli 0.9.0-wip WIP (no publish necessary)
package:objective_c 3.0.0-wip WIP (no publish necessary)
package:swift2objc 0.0.1-wip WIP (no publish necessary)
package:swiftgen 0.0.1-wip WIP (no publish necessary)

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant